package com.wq.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wq.dto.ApplicationDTO;
import com.wq.dto.ApprovalDTO;
import com.wq.entity.Application;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author wq
 * @since 2025-11-09
 */
public interface ApplicationService extends IService<Application> {

    /**
     * 提交请假申请
     * @param applicationDTO
     * @return
     */
    Application submitApplication(ApplicationDTO applicationDTO);

    /**
     * 查询我的请假申请（分页）
     * @param pageNum
     * @param pageSize
     * @return
     */
    Page<Application> getMyApplications(Integer pageNum, Integer pageSize);

    /**
     * 查询待审批列表（部门经理）
     * @param pageNum
     * @param pageSize
     * @return
     */
    Page<Application> getPendingApprovals(Integer pageNum, Integer pageSize);

    /**
     * 审批请假申请
     * @param approvalDTO
     * @return
     */
    Boolean approveApplication(ApprovalDTO approvalDTO);

    /**
     * 取消请假申请
     * @param applicationId
     * @return
     */
    Boolean cancelApplication(Integer applicationId);

    /**
     * 查询所有请假申请（系统管理员）
     * @param pageNum
     * @param pageSize
     * @return
     */
    Page<Application> getAllApplications(Integer pageNum, Integer pageSize);

    /**
     * 查询审批历史（部门经理/系统管理员）
     * @param pageNum
     * @param pageSize
     * @return
     */
    Page<Application> getApprovalHistory(Integer pageNum, Integer pageSize);
}
